checkout: Fix bare-user symlink checkouts
authorColin Walters <walters@verbum.org>
Tue, 18 Apr 2017 14:13:45 +0000 (10:13 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Tue, 18 Apr 2017 14:35:45 +0000 (14:35 +0000)
Logic error introduced after refactoring; we hoisted the
`is_bare_user_symlink` variable to the top, but its computation
below.  But the `is_bare` symlink depended on it.

Closes: https://github.com/ostreedev/ostree/issues/798
Closes: #799
Approved by: jlebon

src/libostree/ostree-repo-checkout.c
tests/basic-test.sh

index 392e16fda677837a3a2958b23739194ccb0103ea..71511824e84f2ed772bbb6b6069d44359223149e 100644 (file)
@@ -479,7 +479,6 @@ checkout_one_file_at (OstreeRepo                        *repo,
             (current_repo->mode == OSTREE_REPO_MODE_BARE
              && options->mode == OSTREE_REPO_CHECKOUT_MODE_NONE) ||
             (repo_is_usermode && options->mode == OSTREE_REPO_CHECKOUT_MODE_USER);
-          gboolean is_bare = is_hardlinkable && !is_bare_user_symlink;
           gboolean current_can_cache = (options->enable_uncompressed_cache
                                         && current_repo->enable_uncompressed_cache);
           gboolean is_archive_z2_with_cache = (current_repo->mode == OSTREE_REPO_MODE_ARCHIVE_Z2
@@ -491,6 +490,7 @@ checkout_one_file_at (OstreeRepo                        *repo,
            * as well as write_object().
            */
           is_bare_user_symlink = (repo_is_usermode && is_symlink);
+          const gboolean is_bare = is_hardlinkable && !is_bare_user_symlink;
 
           /* Verify if no_copy_fallback is set that we can hardlink, with a
            * special exception for bare-user symlinks.
index 294854bf4487dbafa6a2c2ff0505b846604545d2..f4b2b118ed07ce86acb26e9e474d79ec98a23d31 100644 (file)
@@ -44,6 +44,7 @@ validate_checkout_basic() {
      assert_has_file baz/cow
      assert_file_has_content baz/cow moo
      assert_has_file baz/deeper/ohyeah
+     assert_symlink_has_content somelink nosuchfile
      )
 }